package org.maurange.formation.licpro;

import java.util.List;

import org.maurange.formation.licpro.rest.ArretDetails;
import org.maurange.formation.licpro.rest.NumLigne;

import android.content.Context;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class ArretAdapterDetails extends BaseAdapter {
	private Context mContext;
	private List<ArretDetails> mListDetails;
	private LayoutInflater inflater;
	
	public ArretAdapterDetails(Context context , List<ArretDetails> p_listDetails)
	{
		super();
		mContext = context;
		mListDetails = p_listDetails;
		this.inflater = LayoutInflater.from(mContext);
		
	}
	@Override
	public int getCount() {
		return mListDetails.size();
	}

	public ArretDetails getItem(int pos) {
		return mListDetails.get(pos);
	}

	@Override
	public long getItemId(int pos) {
		return pos;
	}

	/**
	 * Méthode qui va afficher chaque départ correspondant à l'arret en indiquant le terminus, le temps d'attente et l'image de la ligne
	 */
	@Override
	public View getView(int p_iPosition, View p_oConvertView, ViewGroup p_oParentView) {

		//		Log.d(LOG_TAG, "getView() - position: " + p_iPosition);

		if (p_oConvertView == null) {
			p_oConvertView = inflater.inflate(R.layout.activity_arret_details, null);
		}
		else {

		}
		ArretDetails mArret= this.getItem(p_iPosition);
		//		Log.d(LOG_TAG, "getView() - mArret: " + mArret);
		//		Log.d(LOG_TAG, "getView() - mArret: " + mArret.getLibelle());
		//		Log.d(LOG_TAG, "getView() - mArret: " + mArret.getDistance());

		TextView uiTerminus = (TextView) p_oConvertView.findViewById(R.id.terminus); // le terminus
		uiTerminus.setText(mArret.getTerminus());

		TextView uiArretTemps = (TextView) p_oConvertView.findViewById(R.id.temps_attente); //Le temps d'attente
		//		Log.d(LOG_TAG, "getView() - uiArretDistance: " + uiArretDistance);
		if ( mArret.getTemps() != null )
			uiArretTemps.setText(mArret.getTemps());
		else
			uiArretTemps.setText("Inconnu");

		LinearLayout uiListeArret = (LinearLayout) p_oConvertView.findViewById(R.id.image_line); // On ajoute  l'image
		uiListeArret.removeAllViews();
		ImageView uiArretNumLigne;
		int imageSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, mContext.getResources().getDisplayMetrics());
		int imagePadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,2, mContext.getResources().getDisplayMetrics());
		NumLigne numLigne = mArret.getLigne();
		//Optimisation : recycler les images instanciŽes
		uiArretNumLigne=new ImageView(mContext);
		uiArretNumLigne.setImageResource(numLigne.getNumLigneImageResourceId(mContext));
		uiArretNumLigne.setAdjustViewBounds(true);
		uiArretNumLigne.setMaxHeight(imageSize);
		uiArretNumLigne.setPadding(imagePadding,imagePadding,imagePadding,imagePadding);
		uiListeArret.addView(uiArretNumLigne);

		return p_oConvertView;
	}
	
	public List<ArretDetails> getListArret() {
		return mListDetails;
	}
}
